/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package jforum.actions;

import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jforum.DAO.BanDAO;
import jforum.DAO.UserDAO;
import jforum.domain.Ban;
import jforum.domain.User;
import jforum.util.AuthModule;
import jforum.util.DBConnector;
import jforum.util.SendMailUsingAuthentication;

/**
 *
 * @author Вадим
 */
public class ProcessUsersAction implements Action {

    public String perform(HttpServletRequest request, HttpServletResponse response) throws Exception {
        User user=AuthModule.getUser(request.getCookies());
        if (user!=null) {
            if (user.getAdminRights()) {
                String[] user_ids=request.getParameterValues("id");

                int[] ids = new int[user_ids.length];
                for (int i=0; i< user_ids.length; i++) {
                    try {
                        // если пришел id в качестве параметра
                        ids[i]=Integer.parseInt(user_ids[i]);
                    } catch (NumberFormatException ex) {
                        request.getSession().setAttribute("errorMessage", "Неправильное значение параметра id.");
                        return ActionNames.error_page;
                    }
                }

                DBConnector conn = DBConnector.getInstance();
                UserDAO dao = new UserDAO(conn);

                String action_type=request.getParameter("action");
                if (action_type!=null) {
                    if (action_type.equals("Принять")) {
                        for (int i=0; i < ids.length; i++)
                            dao.Activate(ids[i]);
                        return ActionNames.view_service_page_action;
                    }

                    if (action_type.equals("Отклонить")) {

                        SendMailUsingAuthentication.test();
                        System.out.println("Sucessfully Sent mail to All Users");
                        //здесь пока заглушка, а в дальнейшем будет отправка email с отказом
                        request.getSession().setAttribute("errorMessage", "Нафиг всех отклонили.");
                        return ActionNames.error_page;
                    }

                    if (action_type.equals("Наказать")) {
                        BanDAO bdao = new BanDAO(conn);
                        for (int i=0; i < ids.length; i++) {
                            dao.Punish(ids[i]);
                            User banned_user = new User(ids[i]);
                            Date now = new Date();
                            Ban b = new Ban(-1, banned_user, now.getTime(), now.getTime()+100);
                            bdao.Save(b);
                        }
                        return ActionNames.view_service_page_action;
                    }
                }
                
                request.getSession().setAttribute("errorMessage", "Действие не определено.");
                return ActionNames.error_page;
            } else {
                 request.getSession().setAttribute("errorMessage", "Вам сюда нельзя!");
                 return ActionNames.error_page;
            }
        } else {
            request.getSession().setAttribute("errorMessage", "Авторизуйтесь чтобы войти.");
            return ActionNames.error_page;
        }
    }

}
